<?php

/**
 * EvaluationEleve
 */
class EvaluationEleve extends CI_Model
{
	const TABLE_EVALUATION_ELEVE				= 'evaluationeleve';
	const ID_EVALUATION							= 'IDEvaluation';
	const ID_ETUDIANT_EVALUATION				= 'ETUDIANTID';
	const ID_FORUM_EVALUATION					= 'IDForum';
	const PRESENT_EVALUATION			 		= 'Present';
	const PRESENCE_EVALUATION					= 'Presence';
	const DUREE_PRESENCE_EVALUATION				= 'DureePresence';
	const TENUE_VESTIMENTAIRE_EVALUATION		= 'TenueVestimentaire';
	const DISCOURS_EVALUATION	 				= 'Discours';
	const PARTICIPATION_LOGISTIQUE_EVALUATION	= 'ParticipationLogistique';
	const COMMENTAIRE_EVALUATION				= 'Commentaire';
	
	/**
	 * @var integer
	 */
	private $id;
	
	 /**
     * L'id de l'étudiant
     * @var int
     */
    private $idEtu;
	
	/**
	 * @var integer
	 */
	private $idForum;
	
	/**
	 * @var int
	 */
	private $present;
	
	/**
	 * @var string
	 */
	private $presence;
	
	/**
	 * @var time
	 */
	private $dureePresence;
	
	/**
	 * @var string
	 */
	private $tenueVestimentaire;
	
	/**
	 * @var string
	 */
	private $discours;
	
	/**
	 * @var string
	 */
	private $participationLogistique;
	
	/**
	 * @var string
	 */
	private $commentaire;
	
	public function __construct()
	{
		parent::__construct();
	}
	
	/**
	 * Fonction permettant de récupérer une évaluation élève en fonction de l'identifiant du forum et de l'étudiant
	 * @param integer $id identifiant du forum
	 * @param integer $idEtu identifiatn de l'étudiant
	 * @return EvaluationEleve
	 */
	public static function findById($id, $idEtu)
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
	
	$resultat = $CI->db	->select(self::ID_EVALUATION.','.self::PRESENT_EVALUATION.','.self::PRESENCE_EVALUATION.','.self::DUREE_PRESENCE_EVALUATION.','.self::TENUE_VESTIMENTAIRE_EVALUATION.','.self::DISCOURS_EVALUATION.','.self::PARTICIPATION_LOGISTIQUE_EVALUATION.','.self::COMMENTAIRE_EVALUATION)
							->from(self::TABLE_EVALUATION_ELEVE)
							->where(array(self::ID_FORUM_EVALUATION => $id,
									self::ID_ETUDIANT_EVALUATION => $idEtu))
							->limit(1)
							->get()
							->result_array();
	
		if(!empty($resultat))
		{
			$evaluationEleve = new EvaluationEleve();
			$evaluationEleve->setId($resultat[0][self::ID_EVALUATION]);
			$evaluationEleve->setIDEtu($idEtu);
			$evaluationEleve->setIdForum($id);		
			$evaluationEleve->setPresent($resultat[0][self::PRESENT_EVALUATION]);
			$evaluationEleve->setPresence($resultat[0][self::PRESENCE_EVALUATION]);
			$evaluationEleve->setDureePresence($resultat[0][self::DUREE_PRESENCE_EVALUATION]);
			$evaluationEleve->setTenueVestimentaire($resultat[0][self::TENUE_VESTIMENTAIRE_EVALUATION]);
			$evaluationEleve->setDiscours($resultat[0][self::DISCOURS_EVALUATION]);
			$evaluationEleve->setParticipationLogistique($resultat[0][self::PARTICIPATION_LOGISTIQUE_EVALUATION]);
			$evaluationEleve->setCommentaire($resultat[0][self::COMMENTAIRE_EVALUATION]);
	
			return $evaluationEleve;
		}
		return false;
	}
	
	/**
	 * Permet de vérifier le formulaire de création et modification d'une évaluation élève
	 * @param string $presence
	 * @param time $dureePresence
	 * @param string $tenueVestimentaire
	 * @param string $discours
	 * @param string $participationLogistique
	 * @return true ou false
	 */
	public function checkEvaluation($presence, $dureePresence, $tenueVestimentaire, $discours, $participationLogistique)
	{
		$CI =& get_instance();
		$message = '';
		$retour = true;
	
		if($dureePresence == null || $presence == null || $tenueVestimentaire == null || $discours == null || $participationLogistique == null)
		{
			$message .= "<br>Vous devez remplir tout les champs obligatoires.";
			$CI->session->set_flashdata('message', $message);
			return false;
		}
		else
		{
			if(!verif($dureePresence, 'time'))
			{
				$message .= "<br>Format de la durée de présence incorrecte, elle doit être de la forme hh:mm.";
				$retour = false;
			}
			$ok1=false;
			$ok2=false;
			$ok3=false;
			$ok4=false;
			for($i=1;$i<6;$i++)
			{
			if($presence == $i)
				$ok1=true;
				if($tenueVestimentaire == $i)
					$ok2=true;
					if($discours == $i)
						$ok3=true;
						if($participationLogistique == $i)
							$ok4=true;
			}
			if($ok1==false || $ok2==false || $ok3==false || $ok4==false)
			{
				$message .="<br>Champs incorrects.";
				$retour = false;
			}
				
			$CI->session->set_flashdata('message', $message);
					return $retour;
		}
	}
	
	/**
	 * Fonction permettant d'ajouter une évaluation élève
	 * @param int $idEtu
	 * @param int $idForum
	 * @param int $present
	 * @param string $presence
	 * @param time $dureePresence
	 * @param string $tenueVestimentaire
	 * @param string $discours
	 * @param string $participationLogistique
	 * @param string $commentaire
	 * @return true ou false
	 */
	public static function addEvaluation($idEtu, $idForum, $present, $presence, $dureePresence, $tenueVestimentaire, $discours, $participationLogistique, $commentaire)
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
		 
		if($presence != null)
			$CI->db->set(self::PRESENCE_EVALUATION, $presence);
		 
		if($dureePresence != null)
			$CI->db->set(self::DUREE_PRESENCE_EVALUATION, $dureePresence);
		 
		if($tenueVestimentaire != null)
			$CI->db->set(self::TENUE_VESTIMENTAIRE_EVALUATION, $tenueVestimentaire);
	
		if($discours != null)
			$CI->db->set(self::DISCOURS_EVALUATION, $discours);
		
		if($participationLogistique != null)
			$CI->db->set(self::PARTICIPATION_LOGISTIQUE_EVALUATION, $participationLogistique);
		
		if($commentaire != null)
			$CI->db->set(self::COMMENTAIRE_EVALUATION, $commentaire);
		 
		$CI->db->set(self::ID_ETUDIANT_EVALUATION, $idEtu);
		$CI->db->set(self::ID_FORUM_EVALUATION, $idForum);
		$CI->db->set(self::PRESENT_EVALUATION, $present);
				 
		return $CI->db->insert(self::TABLE_EVALUATION_ELEVE);
	}
	
	
	/**
	 * Fonction permettant de modifier une évaluation élève
	 * @param int $idForum
	 * @param int $present
	 * @param string $presence
	 * @param time $dureePresence
	 * @param string $tenueVestimentaire
	 * @param string $discours
	 * @param string $participationLogistique
	 * @param string $commentaire
	 * @return true ou false
	 */
	public function modifyEvaluation($present, $presence, $dureePresence, $tenueVestimentaire, $discours, $participationLogistique, $commentaire)
	{
		$idEtu = $this->getEtudiant()->getId();
		
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
			
		if($presence != null)
			$CI->db->set(self::PRESENCE_EVALUATION, $presence);
		 
		if($dureePresence != null)
			$CI->db->set(self::DUREE_PRESENCE_EVALUATION, $dureePresence);
		 
		if($tenueVestimentaire != null)
			$CI->db->set(self::TENUE_VESTIMENTAIRE_EVALUATION, $tenueVestimentaire);
	
		if($discours != null)
			$CI->db->set(self::DISCOURS_EVALUATION, $discours);
		
		if($participationLogistique != null)
			$CI->db->set(self::PARTICIPATION_LOGISTIQUE_EVALUATION, $participationLogistique);
		
		if($commentaire != null)
			$CI->db->set(self::COMMENTAIRE_EVALUATION, $commentaire);
		 
		$CI->db->set(self::PRESENT_EVALUATION, $present);
		
		$CI->db->where(array(self::ID_FORUM_EVALUATION => (int)$this->getForum()->getId(),
						self::ID_ETUDIANT_EVALUATION => (int)$idEtu)); 
		
		return $CI->db->update(self::TABLE_EVALUATION_ELEVE);
	}
	
	
	/**
	 * Get id
	 *
	 * @return integer
	 */
	public function getId()
	{
		return $this->id;
	}
	
	/**
	 * Set id
	 *
	 * @param integer id
	 */
	public function setId($id)
	{
		$this->id = $id;
	}
	
	/**
	 * Get etudiant
	 *
	 * @return Etudiant
	 */
	public function getEtudiant()
	{
		return Etudiants::findById($this->idEtu);
	}
	
	/**
	 * Set idEtu
	 *
	 * @param integer idEtu
	 */
	public function setIdEtu($idEtu)
	{
		$this->idEtu = $idEtu;
	}
	
	/**
	 * Get forum
	 *
	 * @return Forum
	 */
	public function getForum()
	{
		return Forum::findById($this->idForum);
	}
	
	/**
	 * Set idForum
	 *
	 * @param integer idForum
	 */
	public function setIdForum($idForum)
	{
		$this->idForum = $idForum;
	}
	
	/**
	 * Set present
	 *
	 * @param int $present
	 */
	public function setPresent($present)
	{
		$this->present = $present;

	}
	
	/**
	 * Get present
	 *
	 * @return int
	 */
	public function getPresent()
	{
		return $this->present;
	}
	
	/**
	 * Set presence
	 *
	 * @param string $presence
	 */
	public function setPresence($presence)
	{
		$this->presence = $presence;
	}
	
	/**
	 * Get presence
	 *
	 * @return string
	 */
	public function getPresence()
	{
		return $this->presence;
	}
	
	/**
	 * Set dureePresence
	 *
	 * @param time $dureePresence
	 */
	public function setDureePresence($dureePresence)
	{
		$this->dureePresence = $dureePresence;
	}
	
	/**
	 * Get dureePresence
	 *
	 * @return time
	 */
	public function getDureePresence()
	{
		return $this->dureePresence;
	}
	
	/**
	 * Set tenueVestimentaire
	 *
	 * @param string $tenueVestimentaire
	 */
	public function setTenueVestimentaire($tenueVestimentaire)
	{
		$this->tenueVestimentaire = $tenueVestimentaire;
	}
	
	/**
	 * Get tenueVestimentaire
	 *
	 * @return string
	 */
	public function getTenueVestimentaire()
	{
		return $this->tenueVestimentaire;
	}
	
	/**
	 * Set discours
	 *
	 * @param string $discours
	 */
	public function setDiscours($discours)
	{
		$this->discours = $discours;
	}
	
	/**
	 * Get discours
	 *
	 * @return string
	 */
	public function getDiscours()
	{
		return $this->discours;
	}
	
	/**
	 * Set participationLogistique
	 *
	 * @param string $participationLogistique
	 */
	public function setParticipationLogistique($participationLogistique)
	{
		$this->participationLogistique = $participationLogistique;
	}
	
	/**
	 * Get participationLogistique
	 *
	 * @return string
	 */
	public function getParticipationLogistique()
	{
		return $this->participationLogistique;
	}

	/**
	 * Set commentaire
	 *
	 * @param string $commentaire
	 */
	public function setCommentaire($commentaire)
	{
		$this->commentaire = $commentaire;
	}
	
	/**
	 * Get commentaire
	 *
	 * @return string
	 */
	public function getCommentaire()
	{
		return $this->commentaire;
	}
	
}
